#include<iostream>
using namespace std;
void Reverse(char* p, char* q)
{
    while (p < q)
    {
        char tmp = *p;
        *p = *q;
        *q = tmp;
        p++;
        q--;

    }
}

string reverseWords(string s) {
    char* start = &s[0];
    char* cur = &s[0];
    while (*cur)
    {
        while (*cur != ' ' && *cur != '\0')
            cur++;
        Reverse(start, cur - 1);
        if (*cur != '\0')
        {
            start = cur + 1;
            cur++;
        }



    }

    return s;
}
int main()
{
    string s = "Let's take LeetCode contest";
    string str=reverseWords(s);
    for (auto e : str)
    {
        cout << e;
    }


}

//string  deal(string s)
//{
//    string str;
//    char* ptr = &s[0];
//    while (*ptr != '\0' || s[0] == '\0')
//    {
//        if (*ptr >= 'A' && *ptr <= 'Z')
//        {
//            *ptr += 32;
//            str += *ptr;
//            ptr++;
//
//        }
//        else if (*ptr == ' ')
//        {
//            ptr++;
//        }
//        else if (*ptr >= 'a' && *ptr <= 'z')
//        {
//            str += *ptr;
//            ptr++;
//
//
//
//        }
//        else
//        {
//            ptr++;
//
//        }
//
//
//
//
//
//
//
//
//
//    }
//    return str;
//
//
//
//}
//
//
//
//
//
//
//bool isPalindrome(string s) {
//    string str = deal(s);
//    int begin = 0;
//    int end = str.size() - 1;
//    while (begin < end)
//    {
//        if (str[begin] != str[end])
//            return false;
//        begin++;
//        end--;
//
//
//
//
//    }
//    return true;
//
//
//}
//int main()
//{
//    string s1 = "0P";
//    int ret=isPalindrome(s1);
//    cout << ret << endl;
//
//
//}
//class Solution {
//
//public:
//
//    int myAtoi(string str) {
//
//        char* ptr = &str[0];
//
//        int flag = 1;
//
//
//
//
//
//        while (*ptr == ' ')
//
//            ptr++;
//
//        if (*ptr == '+')
//
//        {
//            flag = 1;
//
//            ptr++;
//        }
//
//        else if (*ptr == '-')
//
//        {
//            flag = -1;
//
//            ptr++;
//        }
//
//        long long r = 0;
//
//        while (*ptr != '\0')
//
//        {
//            if (*ptr >= '0' && *ptr <= '9')
//
//            {
//                r = r * 10 + (*ptr - '0') * flag;
//
//                if (r < INT_MIN)r = INT_MIN;
//
//                if (r > INT_MAX)r = INT_MAX;
//
//                ptr++;
//
//
//
//
//
//            }
//
//            else
//
//                return r;
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//        }
//
//
//
//
//
//
//
//
//
//
//
//        return r;
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//    }
//
//};
//class Solution {
//
//public:
//
//    string addStrings(string num1, string num2) {
//
//        int end1 = num1.size() - 1;
//
//        int end2 = num2.size() - 1;
//
//        int next = 0;
//
//        string result;
//
//        while (end1 >= 0 || end2 >= 0)
//
//        {
//            int ret1 = end1 >= 0 ? num1[end1--] - '0' : 0;
//
//            int ret2 = end2 >= 0 ? num2[end2--] - '0' : 0;
//
//            int sum = ret1 + ret2 + next;
//
//            int res = sum % 10;
//
//            next = sum / 10;
//
//            result.insert(result.begin(), res + '0');
//
//        }
//
//        if (next == 1)
//
//            result.insert(result.begin(), '1');
//
//
//
//        return result;
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//    }
//
//};
//class Solution {
//
//public:
//
//
//
//    void reverseString(vector<char>& s) {
//
//        int begin = 0;
//
//        int end = s.size() - 1;
//
//        while (begin < end)
//
//        {
//            char tmp = s[begin];
//
//            s[begin] = s[end];
//
//            s[end] = tmp;
//
//            begin++;
//
//            end--;
//
//        }
//
//
//
//    }
//
//}; class Solution {
//
//public:
//
//    int firstUniqChar(string s) {
//
//        int hash[26] = { 0 };
//
//        for (int i = 0; i < s.size(); i++)
//
//        {
//
//            hash[s[i] - 'a']++;
//
//        }
//
//        for (int i = 0; i < s.size(); i++)
//
//        {
//
//            if (hash[s[i] - 'a'] == 1)
//
//                return i;
//
//
//
//
//
//
//
//        }
//
//        return -1;
//
//
//
//
//
//
//
//
//
//
//
//    }
//
//};
//class Solution {
//
//public:
//
//    string  deal(string s)
//
//    {
//        string str;
//
//        char* ptr = &s[0];
//
//        while (s[0] == '\0' || *ptr != '\0')
//
//        {
//            if (*ptr >= 'A' && *ptr <= 'Z')
//
//            {
//                *ptr += 32;
//
//                str += *ptr;
//
//                ptr++;
//
//
//
//            }
//
//            else if (*ptr == ' ')
//
//            {
//                ptr++;
//            }
//
//            else if (*ptr >= 'a' && *ptr <= 'z')
//
//            {
//                str += *ptr;
//
//                ptr++;
//
//
//
//
//
//
//
//            }
//
//            else if (*ptr >= '0' && *ptr <= '9')
//
//            {
//                str += *ptr;
//
//                ptr++;
//
//
//
//
//
//            }
//
//            else
//
//            {
//                ptr++;
//
//
//
//            }
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//        }
//
//        return str;
//
//
//
//
//
//
//
//    }
//
//
//
//
//
//
//
//
//
//
//
//
//
//    bool isPalindrome(string s) {
//
//        string str = deal(s);
//
//        int begin = 0;
//
//        int end = str.size() - 1;
//
//        while (begin < end)
//
//        {
//            if (str[begin] != str[end])
//
//                return false;
//
//            begin++;
//
//            end--;
//
//
//
//
//
//
//
//
//
//        }
//
//        return true;
//
//
//
//
//
//    }
//
//};